@Allure
2年前 提问
1个回答

如何防御 URL 跳转漏洞

Anna艳娜
2年前
  • 严格控制将要跳转的域名。如果某个业务事先已经确定将要跳转的网站,最稳妥的方式是将其直接编码在源代码中,通过URL中传入的参数来映射跳转网址。比如传入jumpto=1则跳转到order.aaa.com,传入jumpto=2则跳转到detail.aaa.com,传入预期之外的参数直接报错即可。但该方式可扩展性很差,随着业务不断发展,将会给开发工作添加额外的麻烦。

  • referer的限制如果确定传递URL参数进入的来源,我们可以通过该方式实现安全限制,保证该URL的有效性,避免恶意用户自己生成跳转链接。

  • 加入有效性验证Token我们保证所有生成的链接都是来自于我们可信域的,通过在生成的链接里加入用户不可控的Token对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用,但是如果功能本身要求比较开放,可能导致有一定的限制。